package br.com.siscom.model.bean;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;

/**
 * Classe que gerencia a baixa de estoque dos produtos. Este objeto e composto pelos objetos Funcionario e Produto
 * @author Sidney
 *
 */
@Entity(name="b_estoque")
public class BEstoque {
	private Integer codigo;
	private Produto produto;
	private Integer quantidade;//este campo armazena a quantidade solicitada de itens do estoque
	private Integer quantidadeEntregue;
	private Funcionario funciEntregaCodigo;
	private Funcionario autorizanteCodigo;
	private Funcionario solicitanteCodigo;
	private Date dataSolicitacao;
	private Date dataAutorizacao;
	private Date dataEntrega;
	private Byte autorizado;
	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO)
	public Integer getCodigo() {
		return codigo;
	}
	public void setCodigo(Integer codigo) {
		this.codigo = codigo;
	}
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="produto_codigo")
	public Produto getProduto() {
		return produto;
	}
	public void setProduto(Produto produto) {
		this.produto = produto;
	}
	public Integer getQuantidade() {
		return quantidade;
	}
	public void setQuantidade(Integer quantidade) {
		this.quantidade = quantidade;
	}
	@Column(name="qtde_entregue")
	public Integer getQuantidadeEntregue() {
		return quantidadeEntregue;
	}
	public void setQuantidadeEntregue(Integer quantidadeEntregue) {
		this.quantidadeEntregue = quantidadeEntregue;
	}
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="funci_entrega_codigo")
	public Funcionario getFunciEntregaCodigo() {
		return funciEntregaCodigo;
	}
	public void setFunciEntregaCodigo(Funcionario funciEntregaCodigo) {
		this.funciEntregaCodigo = funciEntregaCodigo;
	}
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="autorizante_codigo")
	public Funcionario getAutorizanteCodigo() {
		return autorizanteCodigo;
	}
	public void setAutorizanteCodigo(Funcionario autorizanteCodigo) {
		this.autorizanteCodigo = autorizanteCodigo;
	}
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="solicitante_codigo")
	public Funcionario getSolicitanteCodigo() {
		return solicitanteCodigo;
	}
	public void setSolicitanteCodigo(Funcionario solicitanteCodigo) {
		this.solicitanteCodigo = solicitanteCodigo;
	}
	@Column(name="data_solicitacao")
	public Date getDataSolicitacao() {
		return dataSolicitacao;
	}
	public void setDataSolicitacao(Date dataSolicitacao) {
		this.dataSolicitacao = dataSolicitacao;
	}
	@Column(name="data_autorizacao")
	public Date getDataAutorizacao() {
		return dataAutorizacao;
	}
	public void setDataAutorizacao(Date dataAutorizacao) {
		this.dataAutorizacao = dataAutorizacao;
	}
	@Column(name="data_entrega")
	public Date getDataEntrega() {
		return dataEntrega;
	}
	public void setDataEntrega(Date dataEntrega) {
		this.dataEntrega = dataEntrega;
	}
	
	public Byte getAutorizado() {
		return autorizado;
	}
	public void setAutorizado(Byte autorizado) {
		this.autorizado = autorizado;
	}

}
